#include <cjsonvalue_common.h>
#include <cjson.h>

CJsonValue * CopyValue(const CJsonValue * value)
{
  if (!value)
  {
    throw CJsonError(INVALID_PARAM);
  }
  switch (value->GetType())
  {
    case JV_OBJECT:
      return new CJsonObject((CJsonObject*)value);
    break;
    case JV_BOOL:
      return new CJsonValueBool((CJsonValueBool*)value);
    break;
    case JV_NULL:
      return new CJsonValueNull();
    break;
    case JV_NUMBER:
      return new CJsonValueNumber((CJsonValueNumber*)value);
    break;
    case JV_STRING:
      return new CJsonValueString((CJsonValueString*)value);
    break;
    case JV_ARRAY:
      return new CJsonArray((CJsonArray*)value);
    break;
    default:
      throw CJsonError(INVALID_PARAM);
  }
}

